<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\AdminUserRequest;
use Spatie\Permission\Models\Role;

class AdminUserController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取后台所有用户数据
        $admins = Admin::where('name','!=',config('hd_module.webmaster'))->paginate(10);
        return view('admin::adminuser.index',compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(AdminUserRequest $request)
    {
        //如果能进入到当前方法内,代表的是填写的数据是通过验证
        //将获取的post数据直接往admins表里面存
        //laravel框架默认是不允许批量存储多个字段的值,所以需要去Admin模型设置一个属性
        //存数据之前应该将密码加密
        $post = $request->all();
        $post['password'] = bcrypt($post['password']);
        Admin::create($post);
        //设置闪存并返回
        session()->flash('success','用户添加成功');
        return redirect()->route('adminuser.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(AdminUserRequest $request,$id)
    {
        $post = $request->all();
        $admin = Admin::find($id);
        //dd($admin);
        $admin['name'] = $post['name'];
        $admin['username']=$post['username'];
        //判断是否有密码，如果有久保存
        if ($post['password']){
            $admin['password'] = bcrypt($post['password']);
        }
        //保存数据
        $admin->save();
        //设置闪存信息
        session()->flash('success','用户修改成功！');
        //返回首页
        return redirect()->route('adminuser.index');
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //用$id找到对的的角色ID
        $admin = Admin::find($id);
        //判断删除的是不是站长角色
        if($admin['id']== 1){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
        //设置删除语句
        Admin::destroy($id);
        //设置闪存信息
        session()->flash('success','删除成功！');
        //设置跳回上一页
        return back();
    }

    public function showRole($adminid){
        if ($adminid==1){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
        //通过$admin找到对应数据的后台用户数据
        $admin = Admin::find($adminid);
        //获取当前所有角色数据
        $roles = Role::where('name','!=',config('hd_module.webmaster'))->get();
        //加载展示的模板
        //dump($roles);
        return view('admin::adminuser.showRole',compact('admin','roles'));
    }

    public function assignRole(Request $request,$adminid){
        //判断post数据中是否存在name值，如果没有，就判定为一个选项都没勾选，就提醒
        if (!$request->input('name')){
            //设置闪存信息，并跳转
            session()->flash('danger','请选择至少一个角色，或者直接退出！');
            return back();
        }
        //获取当前用户信息
        $admin = Admin::find($adminid);
        //dd($admin);
        //将角色同步到用户信息里
        $admin->syncRoles($request->input('name'));
        //设置闪存信息
        session()->flash('success','角色设置成功！');
        //返回页面
        return redirect()->route('adminuser.index');
    }
}
